home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1999 March / EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso / earcd / devel / vbcc-68k-src / machines / amiga68k / libsrc / amigalib / argarray.c next >
C/C++ Source or Header  |  1999-01-01  |  2KB  |  96 lines

  1. #include <exec/memory.h>
  2. #include <workbench/startup.h>
  3. #include <workbench/workbench.h>
  4. #include <libraries/commodities.h>
  5. #include <proto/commodities.h>
  6. #include <proto/icon.h>
  7. #include <proto/exec.h>
  8. #include <proto/dos.h>
  9.  
  10. /*  Was hat NEW_ARGARRAY zu bedeuten?   */
  11.  
  12. #ifdef NEW_ARGARRAY
  13. static UBYTE **argArray;
  14. #endif
  15. static struct DiskObject *dObj;
  16.  
  17. UBYTE **ArgArrayInit(long argc, UBYTE **argv)
  18. {
  19.   if (argc)
  20.   {
  21.     if (argc>1)
  22. #ifdef NEW_ARGARRAY
  23.       if ((argArray=AllocVec(argc*sizeof(char *),MEMF_ANY)))
  24.       {
  25.         UBYTE **p,**p1;
  26.  
  27.         p=p1=argArray;
  28.         argv++;
  29.         do
  30.         {
  31.          *p1++=*argv++;
  32.         }
  33.         while(--argc);
  34.         return p;
  35.       }
  36. #else
  37.     {
  38.       argv++; return argv;
  39.     }
  40. #endif
  41.   }
  42.   else
  43.     if ((dObj=GetDiskObject(((struct WBStartup *)argv)->sm_ArgList->wa_Name)))
  44.       return (UBYTE **)dObj->do_ToolTypes;
  45.   return NULL;
  46.  
  47. }
  48.  
  49. STRPTR ArgString(UBYTE **tt, STRPTR entry, STRPTR defstr)
  50. {
  51.   STRPTR str;
  52.  
  53.   if (!entry || !(str=FindToolType(tt,entry)))
  54.     str=defstr;
  55.   return str;
  56. }
  57.  
  58. LONG ArgInt(UBYTE **tt, STRPTR entry, long defval)
  59. {
  60.   STRPTR str;
  61.  
  62.   if (entry && (str=FindToolType(tt,entry)))
  63.     StrToLong(str,&defval);
  64.   return defval;
  65. }
  66.  
  67. #if 0
  68.  
  69. CxObj *UserFilter(UBYTE **tt, STRPTR entry, STRPTR defstr)
  70. {
  71.   STRPTR str;
  72.  
  73.   if (!entry || !(str=FindToolType(tt,entry)))
  74.     str=defstr;
  75.   return (CreateCxObj(CX_FILTER,(long)str,NULL));
  76. }
  77.  
  78. #endif
  79.  
  80. void ArgArrayDone(void)
  81. {
  82.   struct DiskObject **d;
  83. #ifdef NEW_ARGARRAY
  84.   UBYTE ***a;
  85.  
  86.   if (*(a=&argArray))
  87.   {
  88.     FreeVec(*a); *a=NULL;
  89.   }
  90. #endif
  91.   if (*(d=&dObj))
  92.   {
  93.     FreeDiskObject(*d); *d=NULL;
  94.   }
  95. }
  96.